Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


sbapp/pydub/generators.py 1.8.1 (357c0251) Text, 4.04 KB

T8b949e"""
Each generator will return float samples from -1.0 to 1.0, which can be
converted to actual audio with 8, 16, 24, or 32 bit depth using the
SiganlGenerator.to_audio_segment() method (on any of it's subclasses).

See Wikipedia's "waveform" page for info on some of the generators included
here: http://en.wikipedia.org/wiki/Waveform
"""

Tff7b72import T7ee787math
Tff7b72import T7ee787array
Tff7b72import T7ee787itertools
Tff7b72import T7ee787random
Tff7b72from T7ee787.T7ee787audio_segment Tff7b72import Te6edf3AudioSegment
Tff7b72from T7ee787.T7ee787utils Tff7b72import Tb4b4b4(
Te6edf3db_to_floatTb4b4b4,
Te6edf3get_frame_widthTb4b4b4,
Te6edf3get_array_typeTb4b4b4,
Te6edf3get_min_max_value
Tb4b4b4)



Tff7b72class T56d364SignalGeneratorTb4b4b4(Tffa657objectTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3sample_rateTff7b72=T79c0ff44100Tb4b4b4, Te6edf3bit_depthTff7b72=T79c0ff16Tb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffsample_rate Tff7b72= Te6edf3sample_rate
Tff7b72selfTff7b72.Td2a8ffbit_depth Tff7b72= Te6edf3bit_depth

Tff7b72def Td2a8ffto_audio_segmentTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3durationTff7b72=T79c0ff1000.0Tb4b4b4, Te6edf3volumeTff7b72=T79c0ff0.0Tb4b4b4)Tb4b4b4:
T8b949e"""
Duration in milliseconds
(default: 1 second)
Volume in DB relative to maximum amplitude
(default 0.0 dBFS, which is the maximum value)
"""
Te6edf3minvalTb4b4b4, Te6edf3maxval Tff7b72= Te6edf3get_min_max_valueTb4b4b4(Tff7b72selfTff7b72.Td2a8ffbit_depthTb4b4b4)
Te6edf3sample_width Tff7b72= Te6edf3get_frame_widthTb4b4b4(Tff7b72selfTff7b72.Td2a8ffbit_depthTb4b4b4)
Te6edf3array_type Tff7b72= Te6edf3get_array_typeTb4b4b4(Tff7b72selfTff7b72.Td2a8ffbit_depthTb4b4b4)

Te6edf3gain Tff7b72= Te6edf3db_to_floatTb4b4b4(Te6edf3volumeTb4b4b4)
Te6edf3sample_count Tff7b72= Tffa657intTb4b4b4(Tff7b72selfTff7b72.Td2a8ffsample_rate Tff7b72* Tb4b4b4(Te6edf3duration Tff7b72/ T79c0ff1000.0Tb4b4b4)Tb4b4b4)

Te6edf3sample_data Tff7b72= Tb4b4b4(Tffa657intTb4b4b4(Te6edf3val Tff7b72* Te6edf3maxval Tff7b72* Te6edf3gainTb4b4b4) Tff7b72for Te6edf3val Tff7b72in Tff7b72selfTff7b72.Td2a8ffgenerateTb4b4b4(Tb4b4b4)Tb4b4b4)
Te6edf3sample_data Tff7b72= Te6edf3itertoolsTff7b72.Td2a8ffisliceTb4b4b4(Te6edf3sample_dataTb4b4b4, T79c0ff0Tb4b4b4, Te6edf3sample_countTb4b4b4)

Te6edf3data Tff7b72= Te6edf3arrayTff7b72.Td2a8ffarrayTb4b4b4(Te6edf3array_typeTb4b4b4, Te6edf3sample_dataTb4b4b4)
Tff7b72tryTb4b4b4:
Te6edf3data Tff7b72= Te6edf3dataTff7b72.Td2a8fftobytesTb4b4b4(Tb4b4b4)
Tff7b72exceptTb4b4b4:
Te6edf3data Tff7b72= Te6edf3dataTff7b72.Td2a8fftostringTb4b4b4(Tb4b4b4)

Tff7b72return Te6edf3AudioSegmentTb4b4b4(Te6edf3dataTff7b72=Te6edf3dataTb4b4b4, Te6edf3metadataTff7b72=Tb4b4b4{
Ta5d6ff"Ta5d6ffchannelsTa5d6ff"Tb4b4b4: T79c0ff1Tb4b4b4,
Ta5d6ff"Ta5d6ffsample_widthTa5d6ff"Tb4b4b4: Te6edf3sample_widthTb4b4b4,
Ta5d6ff"Ta5d6ffframe_rateTa5d6ff"Tb4b4b4: Tff7b72selfTff7b72.Td2a8ffsample_rateTb4b4b4,
Ta5d6ff"Ta5d6ffframe_widthTa5d6ff"Tb4b4b4: Te6edf3sample_widthTb4b4b4,
Tb4b4b4}Tb4b4b4)

Tff7b72def Td2a8ffgenerateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72raise Tf85149NotImplementedErrorTb4b4b4(Ta5d6ff"Ta5d6ffSignalGenerator subclasses must implement the generate() method, and *should not* call the superclass implementation.Ta5d6ff"Tb4b4b4)



Tff7b72class T56d364SineTb4b4b4(Te6edf3SignalGeneratorTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3freqTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Te6edf3SineTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)
Tff7b72selfTff7b72.Td2a8fffreq Tff7b72= Te6edf3freq

Tff7b72def Td2a8ffgenerateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3sine_of Tff7b72= Tb4b4b4(Tff7b72selfTff7b72.Td2a8fffreq Tff7b72* T79c0ff2 Tff7b72* Te6edf3mathTff7b72.Td2a8ffpiTb4b4b4) Tff7b72/ Tff7b72selfTff7b72.Td2a8ffsample_rate
Te6edf3sample_n Tff7b72= T79c0ff0
Tff7b72while Tff7b72TrueTb4b4b4:
Tff7b72yield Te6edf3mathTff7b72.Td2a8ffsinTb4b4b4(Te6edf3sine_of Tff7b72* Te6edf3sample_nTb4b4b4)
Te6edf3sample_n Tff7b72+Tff7b72= T79c0ff1



Tff7b72class T56d364PulseTb4b4b4(Te6edf3SignalGeneratorTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3freqTb4b4b4, Te6edf3duty_cycleTff7b72=T79c0ff0.5Tb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Te6edf3PulseTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)
Tff7b72selfTff7b72.Td2a8fffreq Tff7b72= Te6edf3freq
Tff7b72selfTff7b72.Td2a8ffduty_cycle Tff7b72= Te6edf3duty_cycle

Tff7b72def Td2a8ffgenerateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3sample_n Tff7b72= T79c0ff0

T8b949e# in samples
Te6edf3cycle_length Tff7b72= Tff7b72selfTff7b72.Td2a8ffsample_rate Tff7b72/ Tffa657floatTb4b4b4(Tff7b72selfTff7b72.Td2a8fffreqTb4b4b4)
Te6edf3pulse_length Tff7b72= Te6edf3cycle_length Tff7b72* Tff7b72selfTff7b72.Td2a8ffduty_cycle

Tff7b72while Tff7b72TrueTb4b4b4:
Tff7b72if Tb4b4b4(Te6edf3sample_n Tff7b72% Te6edf3cycle_lengthTb4b4b4) Tff7b72< Te6edf3pulse_lengthTb4b4b4:
Tff7b72yield T79c0ff1.0
Tff7b72elseTb4b4b4:
Tff7b72yield Tff7b72-T79c0ff1.0
Te6edf3sample_n Tff7b72+Tff7b72= T79c0ff1



Tff7b72class T56d364SquareTb4b4b4(Te6edf3PulseTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3freqTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Te6edf3kwargsTb4b4b4[Ta5d6ff'Ta5d6ffduty_cycleTa5d6ff'Tb4b4b4] Tff7b72= T79c0ff0.5
Tffa657superTb4b4b4(Te6edf3SquareTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3freqTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)



Tff7b72class T56d364SawtoothTb4b4b4(Te6edf3SignalGeneratorTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3freqTb4b4b4, Te6edf3duty_cycleTff7b72=T79c0ff1.0Tb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Tffa657superTb4b4b4(Te6edf3SawtoothTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)
Tff7b72selfTff7b72.Td2a8fffreq Tff7b72= Te6edf3freq
Tff7b72selfTff7b72.Td2a8ffduty_cycle Tff7b72= Te6edf3duty_cycle

Tff7b72def Td2a8ffgenerateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Te6edf3sample_n Tff7b72= T79c0ff0

T8b949e# in samples
Te6edf3cycle_length Tff7b72= Tff7b72selfTff7b72.Td2a8ffsample_rate Tff7b72/ Tffa657floatTb4b4b4(Tff7b72selfTff7b72.Td2a8fffreqTb4b4b4)
Te6edf3midpoint Tff7b72= Te6edf3cycle_length Tff7b72* Tff7b72selfTff7b72.Td2a8ffduty_cycle
Te6edf3ascend_length Tff7b72= Te6edf3midpoint
Te6edf3descend_length Tff7b72= Te6edf3cycle_length Tff7b72- Te6edf3ascend_length

Tff7b72while Tff7b72TrueTb4b4b4:
Te6edf3cycle_position Tff7b72= Te6edf3sample_n Tff7b72% Te6edf3cycle_length
Tff7b72if Te6edf3cycle_position Tff7b72< Te6edf3midpointTb4b4b4:
Tff7b72yield Tb4b4b4(T79c0ff2 Tff7b72* Te6edf3cycle_position Tff7b72/ Te6edf3ascend_lengthTb4b4b4) Tff7b72- T79c0ff1.0
Tff7b72elseTb4b4b4:
Tff7b72yield T79c0ff1.0 Tff7b72- Tb4b4b4(T79c0ff2 Tff7b72* Tb4b4b4(Te6edf3cycle_position Tff7b72- Te6edf3midpointTb4b4b4) Tff7b72/ Te6edf3descend_lengthTb4b4b4)
Te6edf3sample_n Tff7b72+Tff7b72= T79c0ff1



Tff7b72class T56d364TriangleTb4b4b4(Te6edf3SawtoothTb4b4b4)Tb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3freqTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)Tb4b4b4:
Te6edf3kwargsTb4b4b4[Ta5d6ff'Ta5d6ffduty_cycleTa5d6ff'Tb4b4b4] Tff7b72= T79c0ff0.5
Tffa657superTb4b4b4(Te6edf3TriangleTb4b4b4, Tff7b72selfTb4b4b4)Tff7b72.Td2a8ff__init__Tb4b4b4(Te6edf3freqTb4b4b4, Tff7b72*Tff7b72*Te6edf3kwargsTb4b4b4)


Tff7b72class T56d364WhiteNoiseTb4b4b4(Te6edf3SignalGeneratorTb4b4b4)Tb4b4b4:
Tff7b72def Td2a8ffgenerateTb4b4b4(Tff7b72selfTb4b4b4)Tb4b4b4:
Tff7b72while Tff7b72TrueTb4b4b4:
Tff7b72yield Tb4b4b4(Te6edf3randomTff7b72.Td2a8ffrandomTb4b4b4(Tb4b4b4) Tff7b72* T79c0ff2Tb4b4b4) Tff7b72- T79c0ff1.0


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────